/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package repository;

import beans.Fornecedor;
import beans.Funcionario;
import connection.ConnectionBD;
import interacesRepository.IRepositoryFornecedor;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author dlvcpe
 */
public class RepositoryFornecedor implements IRepositoryFornecedor {

    private static RepositoryFornecedor instancia;

    public static RepositoryFornecedor getInstancia() {
        if (instancia == null) {
            instancia = new RepositoryFornecedor();
        }
        return instancia;
    }

    public void inserir(Fornecedor fornecedor) {
        try {

            Statement stmt = ConnectionBD.getInstance().createStatement();
            String linhaSQL = new String();
//TODO ALTERAR O COD
            linhaSQL = ("insert into tb_estoque_faccao(ref_faccao, ref_produto, quantidade) values "
                    + "((select REF(f) from tb_faccao f where f.id = '" + 
                    fornecedor.getNome() +
                    "'), (select REF(p) from tb_produto p where p.referencia = '"  
//                    estoqueFaccao.getProduto().getReferencia() + "'), '" + 
//                    estoqueFaccao.getQuantidade() 
                    + "')");
            System.out.println(linhaSQL);
//             if (Main.paramentros.getImprimirSQL() == 1){
//                System.out.println(linhaSQL);
//            }

            stmt.execute(linhaSQL);



            } catch (SQLException ex) {
                Logger.getLogger(RepositoryFornecedor.class.getName()).log(Level.SEVERE, null, ex);
            }
    }

    public void excluir(Fornecedor fornecedor) {
        try {
            Statement stmt = ConnectionBD.getInstance().createStatement();
            String linhaSQL = ("delete from tb_estoque_faccao ef where ef.ref_produto.referencia = '" 
                    + fornecedor.getId()+ "'");
//             if (Main.paramentros.getImprimirSQL() == 1){
//                System.out.println(linhaSQL);
//            }
           stmt.executeQuery(linhaSQL);
        } catch (SQLException ex) {
            Logger.getLogger(RepositoryFornecedor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void alterar(Fornecedor fornecedor) {
         try {
            Statement stmt = ConnectionBD.getInstance().createStatement();
            String linhaSQL = new String();
            //TODO ALTERAR
            linhaSQL = ("update tb_estoque_faccao ef set ef.quantidade = '" + 
//                    estoqueFaccao.getQuantidade() + "' where ef.ref_faccao.id = '" + 
//                    estoqueFaccao.getFaccao().getId() + "' and ef.ref_produto.referencia = '" + 
//                    estoqueFaccao.getProduto().getReferencia() 
                     "'");
            
//             if (Main.paramentros.getImprimirSQL() == 1){
//                System.out.println(linhaSQL);
//            }
            
             stmt.execute(linhaSQL);
        } catch (SQLException ex) {
            Logger.getLogger(RepositoryFornecedor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

//    public Fornecedor consultarClienteID(Integer id) {
//        
//    }

    public Collection consultarnome(String nome) {
         List c = new ArrayList();

        try {
            Statement stmt = ConnectionBD.getInstance().createStatement();

            String linhaSQL  = new String ("select * from tb_faccao f where f.nome like '" + nome + "%'");

//            if (Main.paramentros.getImprimirSQL() == 1){
//                System.out.println(linhaSQL);
//            }
            ResultSet rs = stmt.executeQuery(linhaSQL);
           

            while (rs.next()){
              Fornecedor f = new Fornecedor();
              f.setId( (Integer.parseInt(rs.getObject(1).toString())));
              f.setNome(rs.getObject(2).toString());

//              Endereco e = new Endereco();
//              e.setRua(rs.getObject(3).toString());
//              e.setBairro(rs.getObject(4).toString());
//              e.setCidade(rs.getObject(5).toString());
//              e.setEstado(rs.getObject(6).toString());
//              e.setCep(rs.getObject(7).toString());
//              e.setPontoreferencia(rs.getObject(8).toString());
//
//              f.setEndereco(e);
//              f.setResponsavel(rs.getObject(9).toString());



              c.add(f);
            }
        }
        catch (SQLException ex) {
            Logger.getLogger(RepositoryFornecedor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return c;

    }
//
//    public Collection consultartodos() {
//    }
//
//    public int totalCadastrados() {
//    }

    @Override
    public Fornecedor consultarClienteID(Integer id) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public Collection consultartodos() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public int totalCadastrados() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public Funcionario consultarEstoqueID(Integer id) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public Collection consultarNome(String nome) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public Collection consultarTodos() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
}
